import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
const handleStore = (store) => {
  /**
   * 如果localStorage里面有存state相关数据的话，则进行初始化
   */
  const global = JSON.parse(localStorage.getItem("global") || "{}");
  /**
   * 按照我们的业务，如果没有token的话
   * 则表示没有相关对象
   */
  if (global.token) {
    /**
     * 需要把当前的state对象也同步一下
     * 不然如果在state里面添加一个字段就不会显示在store里面
     */
    store.replaceState({ ...store.state, ...global });
  }

  /**
   * 每次state改变都会触发
   *
   * 第一个参数是更新的值
   * 第二个参数是当前更新后的state
   */
  store.subscribe((updateParams, state) => {
    // 每次更新都把state存到localStorage
    localStorage.setItem("global", JSON.stringify(state));
  });
};
export default new Vuex.Store({
  state: {
    token:''
  },
  getters: {
  },
  mutations: {
    setToken(state,payload){
      state.token=payload
    }
  },
  actions: {
  },
  modules: {
  },
  plugins: [handleStore],
})
